package com.lft.sparsearray;

/**
 * 01. 稀疏数组
 */
public class SparseArrayTest {
	public static void main(String[] args) {
		// 创建一个原始二维数组 11 * 11
		// 0：表示没有棋子；1：表示黑子；2：表示白子。
		Double[][] originalArray = new Double[11][11];
		originalArray[1][1] = 1.11;
		originalArray[2][2] = 2.22;
		originalArray[4][4] = 1.11;
		originalArray[5][5] = 2.22;
		originalArray[10][10] = 1.11;
		
		// 	打印输出
		// 	原始的二维数组:
		// 	0	0	0	0	0	0	0	0	0	0	0
		// 	0	1	0	0	0	0	0	0	0	0	0
		// 	0	0	2	0	0	0	0	0	0	0	0
		// 	0	0	0	0	0	0	0	0	0	0	0
		// 	0	0	0	0	1	0	0	0	0	0	0
		// 	0	0	0	0	0	2	0	0	0	0	0
		// 	0	0	0	0	0	0	0	0	0	0	0
		// 	0	0	0	0	0	0	0	0	0	0	0
		// 	0	0	0	0	0	0	0	0	0	0	0
		// 	0	0	0	0	0	0	0	0	0	0	0
		// 	0	0	0	0	0	0	0	0	0	0	1
		System.out.println("原始的二维数组:");
		for (Double[] rows : originalArray) {
			for (Double data : rows) {
				System.out.printf("%s\t", data);
			}
			System.out.println();
		}
		System.out.println();
		
		// 调用方法，将二维数组转换为稀疏数组。
		Object[][] sparseArray = SparseArrays.toSparseArray(originalArray);
		
		// 打印输出稀疏数组：
		System.out.println("等到的稀疏数组为：");
		for (Object[] ints : sparseArray) {
			System.out.printf("%s\t%s\t%s\t\n", ints[0], ints[1], ints[2]);
		}
		System.out.println();
		
		// 调用方法将稀疏数组存入磁盘(文件);
		SparseArrays.sparseArrayToIO(sparseArray, "D:\\sparseArray.data");
		System.out.println();
		
		// 调用方法从磁盘(文件)中读取稀疏数组;
		Object[][] sparseArrayFromIo = SparseArrays.sparseArrayFromIo("D:\\sparseArray.data");
		System.out.println();
		
		// 调用方法，将稀疏数组转换为二维数组。
		Object[][] revertArray = SparseArrays.toArray(sparseArrayFromIo);
		
		// 打印输出转换后的二维数组：
		System.out.println("还原后的二维数组:");
		for (Object[] rows : revertArray) {
			for (Object data : rows) {
				System.out.printf("%s\t", data);
			}
			System.out.println();
		}
	}
}
